package com.mdhw.user.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mdhw.common.enums.AudiStatusEnum;
import com.mdhw.common.enums.StatusEnum;
import com.mdhw.order.entity.JiaOrder;
import com.mdhw.system.entity.*;
import com.mdhw.system.vo.SysMenuVo;
import com.mdhw.system.vo.SysRoleVo;
import com.mdhw.system.vo.SysUserVo;
import com.mdhw.user.dao.MiliUserDao;
import com.mdhw.user.entity.MiliUser;
import com.mdhw.user.service.MiliUserService;
import com.mdhw.user.vo.MiliUserVo;
import com.mdhw.utils.JwtUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service
public class MiliUserServiceImpl extends ServiceImpl<MiliUserDao, MiliUser> implements MiliUserService {

    @Autowired
    private MiliUserDao miliUserDao;
    @Autowired
    private HttpServletRequest request;

    @Override
    public MiliUserVo selectUserByToken() {
//        String userIdStr = WebContextUtil.getUserToken();
        String token = JwtUtil.getRequestToken(request);
        String userIdStr = JwtUtil.parseToken(token);
        if (userIdStr == null) {
            return null;
        }
        Long userId = Long.parseLong(userIdStr);
        MiliUser miliUser = this.getById(userId);
        MiliUserVo miliUserVo = new MiliUserVo();
        BeanUtils.copyProperties(miliUser,miliUserVo);
        //List<SysMenuVo> sysMenuVoList = this.miliUserDao.selectMenuListByUser(userId);
        //List<SysMenuVo> sysMenuVoList2 = new ArrayList<>();
//        for(SysMenuVo sysMenuVo:sysMenuVoList){
//            String type = sysMenuVo.getType();
//            Long parentId = sysMenuVo.getParentId();
//            String status = sysMenuVo.getStatus();
//            if("155".equals(parentId.toString())){
//                continue;
//            }
//            if("32".equals(parentId.toString())){
//                continue;
//            }
//            if("2".equals(type)) {
//                sysMenuVoList2.add(sysMenuVo);
//            }
//        }

        //List<SysRoleVo> sysRoleVoList = this.sysUserDao.selectRoleListByUser(userId);

        //boolean isAdmin = this.isSystemAdmin(userId);

//        if(isAdmin){
//            LambdaQueryWrapper<SysMenu> smLqw = new LambdaQueryWrapper<>();
//            smLqw.eq(SysMenu::getStatus, StatusEnum.OK.getCode());
//            List<SysMenu> sysMenuList = this.sysMenuService.list(smLqw);
//            sysMenuVoList = new ArrayList<>();
//            for(SysMenu sysMenu:sysMenuList){
//                SysMenuVo sysMenuVo = new SysMenuVo();
//                BeanUtils.copyProperties(sysMenu,sysMenuVo);
//                sysMenuVoList.add(sysMenuVo);
//            }
//        }
        return miliUserVo;
    }
}
